/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package app;

import boundary.IReceptFacade;
import javax.ejb.Stateless;
import entities.Recept;
import exceptions.ReceptNotFoundException;
import java.util.List;
import java.util.Objects;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.EJB;

/**
 *
 * @author Oliver
 */

@Stateless
public class Kucharka {
    
    @EJB
    private IReceptFacade receptFacade;
    
    void setReceptFacade(IReceptFacade receptFacade) {
        this.receptFacade = receptFacade;
    }
    
    /**
     * Kontroluje, jestli již není název receptu obsazen jiným receptem. V případě, že je již název zabrán, vrací funkce true. 
     * @param recept Recept
     * @return boolean
     */
    public boolean kontrolaExistujicihoNazvu(Recept recept) {
        Recept receptStejnyNazev; 
        
        try {     
            receptStejnyNazev = receptFacade.kontrolaExistujicihoNazvu(recept.getNazev());
            return true;
        } catch (ReceptNotFoundException ex) {
            return false;
        }   
    }
    
    /**
     * Editace receptu.
     * @param recept Recept
     */
    public void editovatRecept(Recept recept) {
        receptFacade.edit(recept);
    }
   
    /**
     * Vytvoří nový recept v databázi. Vrací false v případě, že existuje recept s totožným názvem.
     * @param recept Recept
     * @return boolean
     */
    public boolean vytvoritNovyRecept(Recept recept) {
        
        try {
            receptFacade.kontrolaExistujicihoNazvu(recept.getNazev());
            receptFacade.create(recept);
            return true;
        } catch (ReceptNotFoundException ex) {
            return false;
        }
        
    }
    
    public List<Recept> vratitSeznamReceptu() {
        return receptFacade.findAll();
    }
    
    /**
     * Vrací recept k prohlížení a další manipulaci.
     * @param id_recept int
     * @return Recept
     */
    public Recept prohlizetRecept(int id_recept) {
        return receptFacade.find(id_recept);
    }
    
    /**
     * Vymaže recept z databáze
     * @param recept Recept
     */
    public void smazatRecept(Recept recept) {
        receptFacade.remove(recept);
    }
    
    public int vratitPocetReceptu() {
        return receptFacade.findAll().size();
    }

}
